package pers.xiaojun.boot.module.system.service.oauth2;

import pers.xiaojun.boot.module.system.service.oauth2.dto.OAuth2CodeDTO;

import java.util.List;

/**
 * 授权码服务类
 *
 * @author xiaojun
 * @since 2025-10-18
 */
public interface OAuth2CodeService {


    /**
     * 创建授权码
     *
     * @param clientId    客户端id
     * @param userId      用户id
     * @param scopes      授权范围
     * @param redirectUri 重定向地址
     * @param state       授权码
     * @return 授权码信息
     */
    OAuth2CodeDTO createAuthorizationCode(String clientId, Long userId, List<String> scopes, String redirectUri, String state);


    /**
     * 根据授权码获取缓存中的授权码信息
     *
     * @param code 授权码
     * @return 授权码信息
     */
    OAuth2CodeDTO getOAuth2CodeByCode(String code);

    /**
     * 删除授权码
     *
     * @param code 授权码
     * @return 是否删除成功
     */
    boolean deleteOAuth2CodeByCode(String code);

}
